perm filename TTY.FAI[5,BGB] blob
sn#013955 filedate 1972-11-29 generic text, type T, neo UTF8
00100 TITLE TTY
00200 ;CAREYE TELETYPE COMMAND JUMP TABLE -- NOVEMBER 1972.
00300
00400 OPDEF PPIOT[702B8]
00500
00600 EXTERN CROP,REFRESH
00700 EXTERN SX,SY,DEL,MAG
00800 OLD44:0
00900 PDL: BLOCK 100
01000
01100 ;TELETYPE COMMAND STATE.
01200 DECLARE{CTRL,META,CHR}
01300
01400 SUBR TTY
01500 BEGIN TTY
01600 LAC 17,[IOWD 100,PDL]
01700 LAC 44↔DAC OLD44
01800 PPIOT 2,-=250
01900 PPIOT 3,3003
02000 MOVEI 20
02100 OUTSTR [BYTE(7)15,12,0]
02200 SOJG .-1
02300 CALL(CROP)
02400 CALL(REFRESH)
02500 L0: OUTSTR[BYTE(7)15,12,0]
02600 L1: OUTSTR [ASCIZ"*"]
02700 INCHRW
02800 SETZM CTRL↔TRZE 200↔SETOM CTRL
02900 SETZM META↔TRZE 400↔SETOM META
03000 CAIN 0,15↔GO L1+1
03100 CAIN 0,12↔GO L1
03200 DAC 0,CHR
03300
03400 ;TEST FOR LETTER COMMAND.
03500 LAC 1,0↔ANDI 1,37
03600 CAIGE 0,"A"↔GO .+3
03700 CAIG 0,"Z"↔GO L3
03800 CAIGE 0,"a"↔GO .+3
03900 CAIG 0,"z"↔GO L3
04000
04100 ;WINDOW MOVING COMMANDS.
04200 CAIN 0," "↔GO L2
04300 CAIN 0,":"↔GO[LAC SX↔FAD DEL↔DAC SX↔GO L2]
04400 CAIN 0,";"↔GO[LAC SX↔FSB DEL↔DAC SX↔GO L2]
04500 CAIN 0,")"↔GO[LAC SY↔FAD DEL↔DAC SY↔GO L2]
04600 CAIN 0,"("↔GO[LAC SY↔FSB DEL↔DAC SY↔GO L2]
04700 CAIN 0,"/"↔GO[LAC DEL↔FSC -1↔DAC DEL↔GO L2]
04800 CAIN 0,"\"↔GO[LAC DEL↔FSC 1↔DAC DEL↔GO L2]
04900 CAIN 0,"*"↔GO[LAC MAG↔FMP[1.5]↔DAC MAG↔GO L2]
05000 CAIN 0,"-"↔GO[LAC MAG↔FDV[1.5]↔DAC MAG↔GO L2]
05100 GO L0
05200
05300 L2: CALL(CROP)
05400 CALL(REFRESH)
05500 GO L1+1
00100 EXTERN HISTOGRAM
00200 EXTERN FLGARC,FLGBK
00300
00400 L3: PUSHJ P,@L4(1)↔GO L1
00500
00600 L4: NOP ;null.
00700 FLGA. ;"A"
00800 FLGB. ;"B"
00900 MAKCUT ;"C"
01000 NOP ;"D"
01100 NOP ;"E"
01200 NOP ;"F"
01300 NOP ;"G"
01400 HISTOGRAM ;"H"
01500 TVDSKI ;"I"
01600 NOP ;"J"
01700 KILLER ;"K"
01800 NOP ;"L"
01900 NOP ;"M"
02000 NOP ;"N"
02100 NOP ;"O"
02200 NOP ;"P"
02300 NOP ;"Q"
02400 NOP ;"R"
02500 NOP ;"S"
02600 TVCAMI ;"T"
02700 NOP ;"U"
02800 NOP ;"V"
02900 NOP ;"W"
03000 NOP ;"X"
03100 NOP ;"Y"
03200 NOP ;"Z"
03300
03400 NOP: OUTSTR[BYTE(7)15,12]
03500 POP0J
03600 FLGA.: SETCMM FLGARC↔OUTSTR[BYTE(7)15,12]↔POP0J
03700 FLGB.: SETCMM FLGBK ↔OUTSTR[BYTE(7)15,12]↔POP0J
03800
03900 BEND
00100 SUBR(GETFIL)
00200 BEGIN GETFIL
00300 OUTSTR[ASCIZ/ FILE = /]
00400 LAC 1,[POINT 6,FILNAM,-1]
00500 MOVEI 2,6
00600 L: INCHWL
00700 CAIN 15
00800 GO[INCHWL↔POP0J]
00900 SOJL 2,L
01000 SUBI 40
01100 IDPB 1
01200 GO L
01300 BEND
01400
01500 FILNAM: 0 ;FILE NAME.
01600 EXTION: 0 ;EXTENSION.
01700 0
01800 PPPN: 0 ;PROJECT-PROGRAMMER.
01900
02000
02100 ;INPUT A TELEVISION PICTURE FROM A DISK FILE.
02200 EXTERN HEADER,TVBUF,FLGSIX
02300 SUBR(TVDSKI)
02400 BEGIN TVDSKI
02500
02600 CALL(GETFIL)
02700 ;DEFAULT FILE SPECIFICATION.
02800 SKIPN 1,PPPN↔LAC 1,[SIXBIT/DATBGB/]↔DAC 1,PPPN
02900 SKIPN 1,EXTION↔LAC 1,[SIXBIT/TMP/]↔DAC 1,EXTION
03000 SKIPN 1,FILNAM↔LAC 1,[SIXBIT/X/]↔DAC 1,FILNAM
03100
03200 INIT 1,17↔SIXBIT/DSK/↔0↔HALT
03300 LOOKUP 1,FILNAM
03400 GO[OUTSTR[ASCIZ/ LOOKUP FAILED.
03500 /]↔GO .+4]
03600 IN 1,[IOWD =10378,HEADER↔0]↔JFCL
03700 OUTSTR[ASCIZ" EOF.
03800 "]↔ RELEASE 1,
03900 SETZM FILNAM↔SETZ EXTION↔SETZM EXTION+1↔SETZM PPPN
04000 POP0J
04100 BEND
00100 TVPTR: XWD -=6912,TVBUF
00200 TVCLIP: 701002 ;BCLIP=7 TCLIP=0 CAM=1.
00300 TVYXW: BYTE(9)50,34,40
00400 TVERR: 0
00500
00600 ;INPUT A TELEVISION PICTURE FROM A CAMERA.
00700 ;TVCAM(CAMERA).
00800 SUBR(TVCAMI)
00900 BEGIN TVCAMI
01000 SETZM FLGSIX
01100 SAVAC(17)
01200 TVTAKE: INIT 17,17↔SIXBIT/TV/↔0
01300 GO[OUTSTR[ASCIZ"CAN'T INIT TV."]↔INCHRW↔GO .-3]
01400
01500 SETZM TVERR↔INPUT 17,TVPTR↔MOVE 1,TVERR
01600 TRNE 1,100060↔GO .-4
01700 RELEASE 17,
01800
01900 ; REPORT ON THE ERROR BITS AND RETAKE IF NECESSARY;
02000 TRNE 1,100000↔OUTSTR [ASCIZ/TV PARITY ERROR.
02100 /]↔ TRNE 1,40 ↔OUTSTR [ASCIZ/TV DATA MISS.
02200 /]↔ TRNE 1,20 ↔OUTSTR [ASCIZ/TV NON EX MEM.
02300 /]↔ TRNE 1,100060↔JRST TVTAKE
02400 ; TIME AND DATE.
02500 CALLI 22↔MOVEM TVTIME#
02600 CALLI 14↔MOVEM TVDATE#
02700 ; CONVERT FROM GREY CODE TO GRAY CODE.
02800 HRLZI 16,[
02900 SETCM 17,(16) ;0
03000 MOVE 15,17 ;1
03100 LSH 15,-1 ;2
03200 AND 15,13 ;3
03300 XORB 17,15 ;4
03400 LSH 15,-2 ;5
03500 AND 15,14 ;6
03600 XOR 17,15 ;7
03700 MOVEM 17,(16) ;10
03800 AOBJN 16, ;11
03900 JRST ;12
04000 BYTE (4)7,7,7,7,7,7,7,7,7
04100 BYTE (4)3,3,3,3,3,3,3,3,3
04200 ]
04300 BLT 16,14
04400 LAC 16,TVPTR
04500 HRRI 12,.+2
04600 JRST
04700 GETAC(17)
04800 POP0J
04900 BEND
00100 SUBR(MAKCUT)
00200 BEGIN
00300 EXTERN REFRESH,MKVICS
00400 SETZ 1,
00500 L1: INCHWL
00600 CAIN 15↔GO L2
00700 IMULI 1,=10
00800 ANDI 17
00900 ADD 1,0
01000 GO L1
01100 L2: INCHWL
01200 CAIL 1,=64
01300 POP0J
01400 MOVNS 1
01500 SETZ 3,
01600 SLACI 2,1B18
01700 LSHC 2,(1)
01800 PUSH P,2
01900 PUSH P,3
02000 PUSHJ P,MKVICS
02100 PUSHJ P,REFRESH
02200 POP0J
02300 BEND
00100 SUBR(KILLER)
00150 EXTERN PGON0
00200 LAC [XWD PGON0+2,PGON0+2]↔DAC PGON0+4
00300 LAC OLD44↔CALLI 11↔JFCL
00400 SETZM AVAIL↔SETZM CORSIZ
00500 SETZM SX↔SETZM SY↔LAC[32.0]↔DAC DEL↔LAC[3.4]↔DAC MAG
00600 CALL(CROP)
00700 CALL(REFRESH)
00800 OUTSTR[BYTE (7)15,12]↔POP0J
00900
01000 CORSIZ: 0
01100 AVAIL: 0
01200 ; PTR ← GETBLK;
01300 SUBR(GETBLK)
01400 BEGIN GETBLK
01500 SKIPN 1,AVAIL↔GO L1
01600 CDR(1)↔DAP AVAIL
01700 SETZM 0(1)↔SETZM 1(1)↔SETZM 2(1)↔SETZM 3(1)
01800 MOVEI 4↔ADDM CORSIZ
01900 ADDI 1,1↔POP0J
02000 ;FOUR MORE K !
02100 ;GET A FOUR K BLOCK OF CORE.
02200 L1: LAC 1,44↔LAC 0,1↔ADDI 0,10000
02300 CALLI 11↔GO[OUTSTR[ASCIZ/NO MORE CORE./]↔HALT]
02400
02500 ;CLEAR THE NEW BLOCK OF CORE.
02600 AOS 1↔DAC 2,AC2#↔LAC 2,44
02700 SETZM(1)↔LIPI(1)↔LAPI(1)1↔BLT(2)
02800
02900 ;MAKE AVAIL LIST.
03000 DAPZ 1,AVAIL↔DIP 1,1↔TLO 1,4
03100 HLRZM 1,(1)↔ADD 1,[XWD 4,4]
03200 CAIE 2,3(1)↔GO .-3↔LAC 2,AC2↔GO GETBLK
03300 BEND
00100 ;RELBLK(PTR);
00200 RELBLK:
00300 BEGIN RELBLK
00400 LAC 1,ARG1↔SUBI 1,1
00500 SETZM 0(1)↔SETZM 1(1)↔SETZM 2(1)↔SETZM 3(1)
00600 LAC 2,AVAIL↔DAP 2,(1)↔DAP 1,AVAIL
00700 NIM -4↔ADDM CORSIZ
00800 POP1J
00900 BEND
01000
01100 ;KLPGON(P)
01200 SUBR(KLPGON)
01300 BEGIN KLPGON
01400 ACCUMULATORS{A2,PGN,E0,Q,R}
01500 LAC PGN,ARG1
01600 CAR E0,1(PGN)
01700 CALL RELBLK,PGN
01800 DAC E0,Q
01900 L: CDR R,1(Q) ;CCW.
02000 CALL RELBLK,Q
02100 CAMN R,E0↔POP1J
02200 DAC R,Q↔GO L
02300 BEND
02400
02500 END TTY